iT邦幫忙

2025 iThome 鐵人賽

DAY 2
0
Cloud Native

EKS in Practice:IaC × GitOps 實戰 30 天系列 第 2

[Day 2] 打破雲端迷霧:為什麼 IaC 是現代開發的必備技能

  • 分享至 

  • xImage
  •  

Infrastructure as Code

不論是對於企業或開發者而言,不斷精簡流程、提高效率一直都是重要的課題。其中一種有效的工具是基礎架構即程式碼 (Infrastructure as Code, IaC),這不僅提供了更方便地管理方式,更維持了 infra 的穩定性與可靠性。但是我們為什麼要使用 IaC 呢?

為什麼我們要用 IaC

我們可以到 AWS 的產品列表上看看,一共有 322 種產品。試想,當專案跨足了至少 10 幾種雲端服務(幾乎是常有的事),而 SRE 或 DevOps 工程師只能在 console 上面人工點點戳戳,這段手動配置的時間就成了最大的浪費。除此之外,手動配置也包含了極大的出錯風險。假設某位 SRE 希望開兩台 EC2,而在 console 上的各種選項中,他就是忘了修改 EC2 所屬的 VPC,於是就開始開發了,但開發者不管怎樣就是碰不到服務本身,花了一堆精力才發現是 VPC 的問題 … 等,諸如此類的 UI 限制都可能導致人為疏失。

https://ithelp.ithome.com.tw/upload/images/20250902/20119667KUgXZrK4z4.png

IaC 能帶來什麼好處?

不過,當組織導入 IaC 之後,情況就變得大不相同。在上述的手動配置失誤情境中,假設導入了 IaC(以下皆以 Terraform 為例),則定義 EC2 需要的必填欄位裡一定包含了 VPC 的 id,因此基本上不會有這種錯誤產生。再來,採用了 IaC 等於使用程式碼定義 infra 的架構,這更衍伸了四種好處:

  1. 組織可以對 infra 的設定檔們做版控,當設定檔改錯時有機會可以 rollback 到前一個穩定的版本。
  2. 這等於組織可以有一個統一的來源對所有的 infra 配置進行管理,亦即滿足了 single source of truth 的條件,避免在 console 管理時所帶來的許多不必要的混亂。
  3. 就像在撰寫一般的應用程式一樣,SRE 或 DevOps 也可以對 IaC 進行自動化測試,可以在提交 commit 之前用 pre-commit-terraform 或者 tflint 進行檢查,讓錯誤率再進一步降低。
  4. 也可以透過對 IaC 模組化,重複利用程式碼,讓組織在後續更輕鬆的建置 infra,或者更彈性的混合模組,進一步提升團隊的效率。

Terraform 是什麼

另外,要實現 IaC 的目標,許多組織和開發團隊轉向了各種工具來管理基礎架構的程式碼。其中,Terraform 是一個廣受歡迎的選擇。Terraform 是一個開源工具,由 HashiCorp 公司開發,它允許工程師們以純粹的程式碼形式定義和管理 infra,無論這些 infra 位於任何雲端服務提供商(如 AWS、Azure、Google Cloud 等)甚至是 local infra provider 也行。

Terraform 的運作原理

我相信大家在第一次看到 Terraform 的設定檔時,一定會不知所措,我也一樣。在我第一次接觸 Terraform 時,我就真當他是一般的程式碼,從 main.tf 這個檔案開始讀起。但問題是沒人跟我講過運作原理,當時的我其實不管從哪開始讀都是徒勞無功。而當我在真正成為 SRE 之後,老大第一個教我們的就是 Terraform 的運作原理(我只能說是超級感謝,老大真的花了很多時間在我跟夥伴身上),在這之後讀起各種設定檔的那種不安感才漸漸消失。

在我的觀點裡,Terraform 有三個最重要的概念:ProviderStateModules

  1. Provider:連接雲端平台的橋樑,是 IaC 的基礎元素。
  2. State:記錄並追蹤實際資源狀態的機制。
  3. Module:同一資料夾中的相關資源組合,分為 root module / child module / published module 三種類型,一個 module 可以視為一組部署的組合

明天會繼續深入介紹 Provider / State / Module 這三者的運作原理,並且帶入實際案例介紹 module 的檔案結構、以及實際上的程式碼應該要長怎樣。


上一篇
[Day 1] 這次不再只是觀望:EKS × IaC × GitOps 實戰 30 天
下一篇
[Day 3] Terraform 是什麼?要怎麼用?三大核心概念與實用工作流程
系列文
EKS in Practice:IaC × GitOps 實戰 30 天5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言